home *** CD-ROM | disk | FTP | other *** search
/ Mac Magazin/MacEasy 32 / Mac Magazin and MacEasy Magazine CD - Issue 32.iso / Grafik & Text / OzTeX3.0 / Metafont / Inputs / ec / exrligtb.mf < prev    next >
Text File  |  1997-03-16  |  10KB  |  342 lines

  1. % exrligtb.mf
  2. %
  3. % (c) Copyright 1995, 1996, 1997 J"org Knappen
  4. % (c) Copyright 1990, 1992 Norbert Schwarz
  5. %
  6. % This file is part of ecfonts version 1.0
  7. %
  8. % Please read the files 00readme.txt, 00inst.txt, 00error.txt, and
  9. % copyrite.txt for further information
  10. %
  11. % You find some documentation in ecdoc.tex (needs LaTeX2e)
  12. %
  13. % Content:
  14. %
  15. % ligtable and kerning programs for roman style fonts
  16. %
  17. %      This file should not be called for monospaced fonts !
  18. %
  19. %  The following ligatures are integrated:
  20. %
  21. %   fi
  22. %   fl
  23. %   ff
  24. %   ffi
  25. %   ffl
  26. %
  27. %   --
  28. %   ---
  29. %   -<hyphenchar>
  30. %   >>
  31. %   <<
  32. %   ``
  33. %   ''
  34. %   ,,
  35. %   !` and ?`
  36.  
  37. version_check(1,0);  % |version_check| was introduced in dc1.3
  38.  
  39. ligtable
  40.     "f":   "i"=:oct"034",
  41.            "f"=:oct"033",
  42.            "l"=:oct"035",
  43.            "'" kern itc#,
  44.            "`" kern itc#,
  45.            oct"020" kern itc#,
  46.            oct"021" kern itc#,
  47.            "?" kern itc#,
  48.            "!" kern itc#,
  49.            ")" kern itc#,
  50.            "]" kern itc#;
  51. ligtable
  52.     oct"033":       % ff
  53.           "i"=:oct"036",
  54.           "l"=:oct"037",
  55.           "'" kern itc#,
  56.           "`" kern itc#,
  57.           oct"020" kern itc#,
  58.           oct"021" kern itc#,
  59.           "?" kern itc#,
  60.           "!" kern itc#,
  61.           ")" kern itc#,
  62.           "]" kern itc#;
  63. ligtable
  64.     "`":  "`"=:oct"020",
  65.           oct"020" kern 2u#,
  66.           "?" kern 2u#,
  67.           "!" kern 2u#;
  68.  
  69. ligtable
  70.     "'":  "'"=:oct"021",
  71.           oct"021" kern 2u#,
  72.           "?" kern 2u#,
  73.           "!" kern 2u#;
  74.  
  75. ligtable
  76.     "-":  "-" =: oct"025",
  77.      oct"177" =: oct"177"; % <hyphen><hyphenchar> => <hyphenchar>
  78.  
  79. ligtable
  80.     oct"025": "-"=:oct"026";  % "---"  => emdash
  81.  
  82. ligtable "<": "<" =: oct"023";     % "<<"
  83. ligtable ">": ">" =: oct"024";     % ">>"
  84. ligtable ",": "," =: oct"022";     % ",,"
  85. ligtable "!": "`" =: oct"275";     % spanish shriek
  86. ligtable "?": "`" =: oct"276";     % spanish query
  87.  
  88.  
  89. def lig_o_table (expr k) =
  90.              "o" kern k,  oct"256" kern k, oct"362" kern k, oct"363" kern k,
  91.                           oct"364" kern k, oct"365" kern k, oct"366" kern k,
  92.                           oct"367" kern k, oct"370" kern k
  93. enddef;
  94.  
  95. def lig_a_table (expr k) =
  96.            "a" kern k,    oct"240" kern k, oct"241" kern k, oct"340" kern k,
  97.                           oct"341" kern k, oct"342" kern k, oct"342" kern k,
  98.                           oct"343" kern k, oct"344" kern k, oct"345" kern k,
  99.                           oct"346" kern k
  100. enddef;
  101.  
  102. def lig_c_table (expr k) =
  103.            "c" kern k,   oct"242" kern k, oct"243" kern k, oct"347" kern k
  104. enddef;
  105.  
  106. def lig_e_table (expr k)=
  107.              "e" kern k, oct"245" kern k, oct"246" kern k, oct"350" kern k,
  108.                          oct"351" kern k, oct"352" kern k, oct"353" kern k
  109. enddef;
  110.  
  111. def lig_u_table (expr k)=
  112.              "u" kern k, oct"266" kern k, oct"267" kern k, oct"371" kern k,
  113.                          oct"372" kern k, oct"373" kern k, oct"374" kern k
  114. enddef;
  115.  
  116. def lig_A_table (expr k)=
  117.              "A" kern k, oct"200" kern k, oct"201" kern k, oct"300" kern k,
  118.                          oct"301" kern k, oct"302" kern k, oct"303" kern k,
  119.                          oct"304" kern k, oct"305" kern k, oct"306" kern k
  120. enddef;
  121.  
  122. def lig_O_table (expr k)=
  123.              "O" kern k, oct"216" kern k, oct"322" kern k, oct"323" kern k,
  124.                          oct"324" kern k, oct"325" kern k, oct"326" kern k,
  125.                          oct"327" kern k, oct"330" kern k
  126. enddef;
  127.  
  128. def lig_CGQ_table (expr k)=
  129.              "C" kern k, "G" kern k, oct"202" kern k, oct"203" kern k,
  130.                     oct"207" kern k, oct"307" kern k, "Q" kern k
  131. enddef;
  132.  
  133. def lig_U_table (expr k)=
  134.              "U" kern k, oct"226" kern k, oct"227" kern k, oct"331" kern k, 
  135.              oct"332" kern k, oct"333" kern k, oct"334" kern k
  136. enddef;
  137.  
  138. def lig_cA_table =
  139.              "A": oct"200": oct"300": oct"301": oct"302":
  140.              oct"303": oct"304": oct"305":
  141. enddef;
  142.  
  143. k#:=-.5u#; ku#:=-1u#; kk#:=-1.5u#; kkk#:=-2u#; % four degrees of kerning
  144.  
  145. ligtable boundarychar:
  146.    oct"020" kern -kk#, oct"021" kern -kk#, oct"022" kern -kk#,
  147.    oct"055" kern -kk#, oct"140" kern -kk#, oct"047" kern -kk#;
  148.  
  149. ligtable oct"022":
  150.    oct"015" kern 2u#, "," kern 2u#,
  151.          oct"015":
  152.    oct"022" kern 2u#,
  153.    "j" kern -kkk#, oct"032" kern -kkk#, "g" kern -ku#, oct"247" kern -ku#,
  154.    "y" kern -ku#, oct"270" kern -ku#, oct"375" kern -ku#,
  155.    "v" kern kk#, "w" kern ku#, "V" kern kkk#, "W" kern kk#,
  156.    "Y" kern kk#,  oct"230" kern kk#, oct"335" kern kk#,
  157.    lig_O_table(k#), lig_CGQ_table(k#),
  158.    boundarychar kern -kk#;
  159.  
  160. ligtable oct"020":
  161.    oct"140" kern 2u#, oct"020" kern 2u#, boundarychar kern -kk#;
  162.  
  163. ligtable oct"021":
  164.    oct"047" kern 2u#, oct"021" kern 2u#, boundarychar kern -kk#;
  165.  
  166. ligtable oct"024": % ">>"
  167.    "." kern kk#, "," kern kk#;
  168.  
  169. ligtable
  170.       "k":  "W" kern kk#, "V" kern kk#,
  171.       if serifs: "v":    lig_a_table(-u#), fi
  172.       "w": lig_e_table(k#),
  173.            lig_a_table(k#),
  174.            lig_o_table(k#),
  175.            lig_c_table(k#);
  176.  
  177. ligtable
  178.       "P":   lig_A_table(kk#),
  179.       "y": oct"270": oct"375": % \"y, \'y  
  180.              lig_o_table(k#),
  181.              lig_e_table(k#),
  182.              lig_a_table(k#),
  183.              "." kern kk#,
  184.              "," kern kk#;
  185. ligtable
  186.       "F":"V": "W":
  187.            if serifs:
  188.              "o" kern kk#,
  189.              "a" kern kk#,
  190.              "e" kern kk#,
  191.              "y" kern kk#,
  192.              "u" kern kk#,
  193.              "r" kern kk#,
  194.              "v" kern kk#,
  195.              "s" kern kk#,
  196.              "c" kern kk#,
  197.              "d" kern kk#,
  198.              "g" kern kk#,
  199.              "m" kern kk#,
  200.              "n" kern kk#,
  201.              "p" kern kk#,
  202.              "w" kern kk#,
  203.              "z" kern kk#,
  204.              oct"346" kern kk#,
  205.              oct"370" kern kk#,
  206.              lig_A_table(kkk#),
  207.             else:
  208.              "o" kern k#,
  209.              "a" kern k#,
  210.              "e" kern k#,
  211.              "y" kern k#,
  212.              "u" kern k#,
  213.              "r" kern k#,
  214.              "v" kern k#,
  215.              "s" kern k#,
  216.              "c" kern k#,
  217.              "d" kern k#,
  218.              "g" kern k#,
  219.              "m" kern k#,
  220.              "n" kern k#,
  221.              "p" kern k#,
  222.              "w" kern k#,
  223.              "z" kern k#,
  224.              oct"346" kern k#,
  225.              oct"370" kern k#,
  226.              lig_A_table(kk#),
  227.             fi
  228.        "X":  lig_O_table(k#),
  229.              lig_CGQ_table(k#);
  230.  
  231. ligtable "K":  if serifs:
  232.                  "v" kern kk#,
  233.                  "w" kern k#,
  234.                else:
  235.                  "v" kern k#,
  236.                fi 
  237.                lig_o_table(k#),
  238.                lig_CGQ_table(k#);
  239.  
  240. ligtable
  241.        "T": oct"224": oct"225": % \v{T}, \c{T}
  242.                "y" kern if serifs: k# else: kk# fi,
  243.        "Y": oct"230": oct"335": % \"Y, \'Y
  244.                "e" kern kk#,
  245.                "o" kern kk#,
  246.                "r" kern kk#,
  247.                "a" kern kk#,
  248.                "u" kern kk#,
  249.                "n" kern kk#,
  250.                oct"031" kern kk#, % \i
  251.                "c" kern kk#, 
  252.                "d" kern kk#,
  253.                "g" kern kk#,
  254.                "p" kern kk#,
  255.                "s" kern kk#,
  256.                "v" kern kk#,
  257.                "w" kern kk#,
  258.                "x" kern kk#,
  259.                "z" kern kk#,
  260.                lig_A_table(kk#);
  261. ligtable
  262.  "O": oct"216": oct"322": oct"323": oct"324": oct"325": oct"326": oct"330":
  263.  "D": oct"204": oct"320":
  264.                "X" kern k#,
  265.                "W" kern k#,
  266.                lig_A_table(k#),
  267.                "V" kern k#,
  268.                "Y" kern k#, oct"230" kern k#, oct"335" kern k#;
  269. if serifs:
  270. ligtable
  271.        "m": "n": "h": 
  272.                "W" kern kk#, "V" kern kk#,
  273.        oct"253": oct"254": oct"255": oct"361": % \'n, \v{n}, \ng, \~n
  274.                "t" kern k#,
  275.                lig_u_table(k#),
  276.                "b" kern k#,
  277.                "y" kern k#,
  278.                "v" kern k#,
  279.                "w" kern k#;
  280. ligtable
  281.        "c": oct"242": oct"243": oct"347": % \'c, \v{c}, \c{c}
  282.                "h" kern k#,
  283.                "k" kern k#;
  284. fi
  285. ligtable
  286.  "o": oct"256": oct"362": oct"363": oct"364": oct"365": oct"366": oct"370":
  287.  "b": "p":     lig_e_table(-k#),
  288.                lig_o_table(-k#),
  289.                "x" kern k#,
  290.                "d" kern -k#,
  291.                lig_c_table(-k#),
  292.                "q" kern -k#,
  293.  "a": oct"240": oct"340": oct"341": oct"342": oct"343": oct"344": oct"345": 
  294.               if serifs:
  295.                "v" kern k#,
  296.                "j" kern u#,
  297.               else:
  298.                "r" kern k#,
  299.               fi
  300.  "t": oct"264": oct"265":   
  301.               "y" kern k#, oct"270" kern k#, oct"375" kern k#,
  302.  "u": oct"266": oct"267": oct"371": oct"372": oct"373": oct"374":
  303.               "w" kern k#;
  304. ligtable
  305.        lig_cA_table
  306.               "y" kern if serifs: kk# else: k# fi,
  307.               oct"270" kern if serifs: kk# else: k# fi,
  308.               oct"375" kern if serifs: kk# else: k# fi,
  309.        oct"202": %\k{A}
  310.               "v" kern if serifs: kkk# else: k# fi, 
  311.               "w" kern if serifs: kk# else: k# fi,
  312.               lig_c_table(k#),
  313.               "d" kern k#, oct"244" kern k#, 
  314.               oct"236" kern k#, oct"360" kern k#,
  315.               lig_e_table(k#),
  316.               lig_o_table(k#),
  317.               "q" kern k#,
  318.   if serifs: "R":  oct"217": fi 
  319.               "t" kern k#, oct"264" kern k#, oct"265" kern k#,
  320.               lig_CGQ_table(k#),
  321.               lig_O_table(k#),
  322.               lig_U_table(k#),
  323.   "L": oct"210": oct"211": oct"212":
  324.        "T" kern kk#, oct"224" kern kk#, oct"225" kern kk#,
  325.        "Y" kern kk#, oct"230" kern kk#, oct"335" kern kk#,
  326.        "V" kern kkk#,
  327.        "W" kern kkk#;
  328. ligtable "g": "j" kern -k#; % logjam
  329. ligtable "I": "I" kern -k#; % Richard III
  330. ligtable "e": "V" kern kk#; % eV
  331. ligtable oct"241": % \k{a}
  332.     if serifs: "g" kern -k# , "p" kern -k#, fi\\ "w" kern k#;
  333. ligtable oct"252": % \l
  334.      "'" kern -k#
  335.        if not serifs: ,
  336.          "a" kern k#, oct"241" kern k#, "c" kern k#, oct"242" kern k#,
  337.          "d" kern k#, "e" kern k#, oct"246" kern k#, "g" kern k#,
  338.          "o" kern k#, oct"363" kern k#, "s" kern k#, oct"261" kern k#
  339.        fi;
  340.  
  341. endinput;
  342.